/**
在 TypeScript (TS) 中，类型断言是一种手段，用于告诉编译器某个值的具体类型。类型断言并不会改变运行时的行为，只是在编译时提供类型信息，以便更好地进行类型检查。
  1. 类型断言的语法
  TypeScript 提供了两种类型断言的语法：
  - 尖括号语法：
  let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
  - as 语法：
  let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
  2. 使用场景
  - 处理  `any`  类型：当你从某个 API 或者第三方库获取数据，返回值类型为  `any` ，你可以使用类型断言来指定更具体的类型。
    
  - 类型转换：在某些情况下，TypeScript 可能无法推断出正确的类型，使用类型断言可以帮助编译器理解你的意图。

  - 与 DOM 交互：在操作 DOM 元素时，通常会使用类型断言来指定元素的具体类型，例如：
  const inputElement = document.getElementById("myInput") as HTMLInputElement;
  3. 注意事项
  - 类型安全：类型断言不会进行任何类型检查，因此使用时需要确保你对值的类型有正确的理解。错误的类型断言可能导致运行时错误。

  - 避免过度使用：过度依赖类型断言可能会掩盖类型系统的优势，尽量通过类型定义和接口来避免使用  `any`  类型。

  - 与联合类型结合使用：在处理联合类型时，类型断言可以帮助你缩小类型范围：
  function handle(value: string | number) {
        if ((value as string).length !== undefined) {
            // 处理字符串
        } else {
            // 处理数字
        }
    }
  4. 结论
  类型断言是 TypeScript 中一个强大的功能，可以帮助开发者更灵活地处理类型。然而，使用时要谨慎，确保类型的准确性，以避免潜在的运行时错误。
 */
// 使用类型断言
const imgEl = document.getElementById("img") as HTMLImageElement;
imgEl.src = "https://www.baidu.com";
imgEl.alt = "图片";

// 类型断言的规则: 断言只能断言成更加具体的类型, 或者 不太具体(any/unknown) 类型
const age: number = 18
// 错误的做法
// const age2 = age as string

// TS类型检测来说是正确的, 但是这个代码本身不太正确
// const age3 = age as any
// const age4 = age3 as string
// console.log(age4.split(" "))

export {}
